//
//  DLNetworkManager.swift
//  新浪微博
//
//  Created by 周冰烽 on 2017/1/18.
//  Copyright © 2017年 周冰烽. All rights reserved.
//

import UIKit
import AFNetworking


/// Swift 的枚举支持任意数据类型
/// switch / enum 在OC中都只是支持整数
enum DLHTTPMethod {
    case GET
    case POST
}

/// 网络管理工具
class DLNetworkManager: AFHTTPSessionManager {
    
    /// 静态区 / 常量 / 闭包 
    /// 在第一次访问时,执行闭包,并且将结果保存在 shared 常量中
    static let shared = DLNetworkManager()
    
    /// 使用一个函数封装 AFN 的GET / POST 请求
    
    /// 封装AFN 的GET / POST 请求
    ///
    /// - Parameters:
    ///   - method: GET / POST
    ///   - URLString: URLString
    ///   - parameters: 参数字典
    ///   - completion: 完成回调[json(字典/数组),是否成功]
    func request(method:DLHTTPMethod = .GET,URLString:String,parameters:[String:AnyObject], completion: @escaping (_ json:AnyObject?,_ isSuccess:Bool)->()) {
        //成功回调
        let success = { (task:URLSessionDataTask,json:Any?) in
            completion(json as AnyObject?,true)
        }
        //失败回调
        let failure = { (task:URLSessionDataTask?,error:Error) in
            //error 通常比较吓人,例如编号:XXXX,错误原因一堆英文
            print("网络请求错误\(error)")
            completion(nil, false)
            
        }
        if method == .GET {
            get(URLString, parameters: parameters, progress: nil, success: success, failure: failure)
        } else {
            post(URLString, parameters: parameters, progress: nil, success: success, failure: failure)
        }
    }
    
}
